package hot100.链表.需要虚拟头;

import hot100.链表.ListNode;

/** 24 两两交换链表中的节点
/**
 *
 */
public class swapPairs24 {
    public ListNode swapPairs(ListNode head) {
        ListNode newStartHead = new ListNode(0, head); // 虚拟头
        ListNode operationNode = newStartHead;

        //迭代
        while (operationNode.next != null &&  // 对象.属性
                // 上是对下的校验 理解一下 属性/对象
                // PS:可以发现迭代对象就是目标对象 然后元素遍历到底后再next一个
                operationNode.next.next != null) { // 对象.(属性)(对象).属性


            //临时
            ListNode temp = operationNode.next.next.next;

            ListNode firstNode = operationNode.next;
            ListNode secondNode = operationNode.next.next;

            operationNode.next = secondNode;
            secondNode.next =firstNode;
            firstNode.next = temp;

            //下轮
            operationNode = firstNode; // 一去了二的位置 二是下一轮的虚拟头
        }

        return newStartHead.next; // 头发生变动
    }
}